import { app, BrowserWindow, ipcMain } from 'electron';
import { join } from 'path';
import path from 'path';
import { fileURLToPath } from 'url';

const __dirname = path.dirname(fileURLToPath(import.meta.url));

// 主进程
const createdWindow = () => {
    const win = new BrowserWindow({
        width: 900,
        height: 600,
        webPreferences: {
            preload: path.join(__dirname, '../src-electron/composables/preload.js'),
            nodeIntegration: true,
            webviewTag: true,
            //如果你使用webview加载网页方式需要添加此标签
            // 允许加载不安全的 HTTP 资源（开发环境服务器通常是 HTTP）
            allowRunningInsecureContent: true,
            // 禁用同源策略限制（开发环境临时使用）
            webSecurity: false,
            contextIsolation: true, // 开启上下文隔离
        },
        title: 'Simple UI',
        icon: join(__dirname, '../public/logon.ico'),
        acceptFirstMouse: true, //允许程序接受鼠标事件
        autoHideMenuBar: true, //边框菜单
        minimizable: true, // 可否最小化
        maximizable: true, // 可否最大化
        closable: true, // 展示关闭按钮
        fullscreen: false, // MAC下是否可以全屏
        skipTaskbar: false, // 在任务栏中显示窗口
        transparent: false,
        movable: true, // 可否移动
    });
    const isDev = process.env.NODE_ENV === 'development';
    if (isDev) {
        // 开发环境：加载 React 开发服务器（确保端口与 React 启动端口一致）
        win.loadURL('http://localhost:9080');
        win.webContents.openDevTools(); // 开发环境打开调试工具
    } else {
        // 生产环境：加载 Vite 打包后的 dist/index.html
        // 注意：打包后 dist 目录会被 electron-builder 包含到资源中，路径需正确拼接
        const indexPath = join(__dirname, '../dist/index.html'); // 关键：指向 dist 目录
        win.loadFile(indexPath);
    }
    // 窗口最大化
    ipcMain.on('window-max', function () {
        win.maximize();
    });
    // 窗口恢复
    ipcMain.on('window-normal', function () {
        win.restore();
    });

    // 窗口最小化
    ipcMain.on('window-min', function () {
        win.minimize();
    });

    // 窗口关闭
    ipcMain.on('window-close', function () {
        win.close();
    });
};

app.whenReady().then(createdWindow);

app.on('window-all-closed', () => {
    if (process.platform !== 'darwin') {
        app.quit();
    }
});

app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
        createdWindow();
    }
});
